LLVM has a ton of optimizations and is suitable as a backend for many programming languages. It gets a little more complicated for managed languages and JIT scenarios. In this talk Egor will let us know about difficulties that they faced in C# while implementing LLVM backend
Presentation